package com.denlaku.longan.repository;

import com.denlaku.longan.dao.UserDao;
import com.denlaku.longan.qo.UserQuery;
import com.denlaku.longan.vo.User;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 用户Repo
 *
 * @author tianx
 */
@Repository
public class UserRepository {
    @Autowired
    private UserDao userDao;

    /**
     * 根据参数查询用户
     *
     * @param userQuery 查询参数
     * @return 用户
     */
    public User get(UserQuery userQuery) {
        if (userQuery.getId() == null && StringUtils.isEmpty(userQuery.getAccount())) {
            return null;
        }
        return userDao.get(userQuery);
    }

    /**
     * 根据参数查询用户密码
     *
     * @param userQuery 查询参数
     * @return 用户密码
     */
    public String getPassword(UserQuery userQuery) {
        if (userQuery.getId() == null && StringUtils.isEmpty(userQuery.getAccount())) {
            return null;
        }
        return userDao.getPassword(userQuery);
    }

    /**
     * 根据参数查询用户
     *
     * @param userQuery 参数查询
     * @return 用户
     */
    public List<User> list(UserQuery userQuery) {
        return userDao.list(userQuery);
    }

    public List<User> search(UserQuery userQuery) {
        return userDao.search(userQuery);
    }

    /**
     * 根据参数查询用户基础信息
     *
     * @param userQuery 参数查询
     * @return 用户基础信息
     */
    public List<User> listBaseInfo(UserQuery userQuery) {
        return userDao.listBaseInfo(userQuery);
    }

    /**
     * 新增用户
     *
     * @param user 用户
     */
    public void add(User user) {
        userDao.add(user);
    }

    /**
     * 更新用户
     *
     * @param user 用户
     */
    public void update(User user) {
        userDao.update(user);
    }

    /**
     * 删除用户
     *
     * @param id 用户ID
     */
    public void delete(Long id) {
        userDao.delete(id);
    }

    /**
     * 更新用户
     *
     * @param user 用户
     */
    public void enabled(User user) {
        userDao.enabled(user);
    }

    /**
     * 更新用户
     *
     * @param user 用户
     */
    public void disabled(User user) {
        userDao.disabled(user);
    }

}
